/**
 * 
 */
package org.yelongframework.model.generator.manager.wrapper;

import java.util.List;

import org.yelongframework.model.generator.manager.GenFieldAndColumn;
import org.yelongframework.model.generator.manager.GenModelAndTable;
import org.yelongframework.model.generator.manager.GenModelAndTableProperties;
import org.yelongframework.model.manager.wrapper.ModelAndTableWrapper;

/**
 * 模型表包装器
 * 
 * @since 1.0.0
 */
public class GenModelAndTableWrapper extends ModelAndTableWrapper implements GenModelAndTable {

	/** 模型表 */
	private final GenModelAndTable genModelAndTable;

	/** 字段列集合 */
	private final List<GenFieldAndColumn> genFieldAndColumns;

	// ==================================================构造器==================================================

	/**
	 * @param genModelAndTable 模型表
	 */
	public GenModelAndTableWrapper(GenModelAndTable genModelAndTable) {
		this(genModelAndTable, null);
	}

	/**
	 * @param genModelAndTable   模型表
	 * @param genFieldAndColumns 字段列集合
	 */
	public GenModelAndTableWrapper(GenModelAndTable genModelAndTable, List<GenFieldAndColumn> genFieldAndColumns) {
		super(genModelAndTable);
		this.genModelAndTable = genModelAndTable;
		this.genFieldAndColumns = genFieldAndColumns;
	}

	// ==================================================模型类==================================================

	@Override
	public String getModelClassPackageName() {
		return getGenModelAndTable().getModelClassPackageName();
	}

	// ==================================================字段列==================================================

	@Override
	public List<GenFieldAndColumn> getGenFieldAndColumnAll() {
		if (null == genFieldAndColumns) {
			return getGenModelAndTable().getGenFieldAndColumnAll();
		}
		return genFieldAndColumns;
	}

	// ==================================================属性==================================================

	@Override
	public GenModelAndTableProperties getProperties() {
		return getGenModelAndTable().getProperties();
	}

	// ==================================================模型表==================================================

	/**
	 * @return 模型表
	 */
	public GenModelAndTable getGenModelAndTable() {
		return genModelAndTable;
	}

}
